

export const validatePasswordStrength = async (_rule, value) => {

  if (!value) {

    return Promise.reject(new Error('密码不能为空'));

  }



  // 弱密码列表

  const weakPasswords = ['123456', 'password', 'admin', '12345678', 'qwerty', '111111'];

  if (weakPasswords.includes(value.toLowerCase())) {

    return Promise.reject(new Error('密码过于简单，请勿使用常见密码'));

  }



  // 字符多样性校验

  let hasUpper = /[A-Z]/.test(value);

  let hasLower = /[a-z]/.test(value);

  let hasDigit = /\d/.test(value);

  let hasSpecial = /[\W_]/.test(value);



  const requirementsMet = [hasUpper, hasLower, hasDigit, hasSpecial].filter(Boolean).length;

  if (requirementsMet < 2) {

    return Promise.reject(new Error('密码需包含大写字母、小写字母、数字和特殊字符中的至少两种'));

  }



  // 密码长度校验

  if (value.length < 8 || value.length > 20) {

    return Promise.reject(new Error('密码长度必须在8到20个字符之间'));

  }



  return Promise.resolve();

};

export const validateStudentId = async (_rule, value) => {
  if (!value) {
    return Promise.reject(new Error('学号不能为空'));
  }
   const studentIdRegex = /^\d{10}$/; // 10位数字
  if (!studentIdRegex.test(value)) {
    return Promise.reject(new Error('学号必须是10位数字'));
  }
};

// 自定义手机号验证规则
 export const validateMobileNumber = async (_rule, value) => {
  if (!value) {
    return Promise.reject(new Error('手机号不能为空'));
  }

  // 示例规则：手机号必须是11位数字，且以1开头，第二位是3-9
  const phoneRegex = /^1[3-9]\d{9}$/; // 中国大陆手机号正则
  if (!phoneRegex.test(value)) {
    return Promise.reject(new Error('手机号格式不正确，请输入有效的手机号'));
  }

  return Promise.resolve();
};
// 自定义勾选用户协议
 export const validateAgree = (_, value) => {
  if (!value) {
    return Promise.reject(new Error('请勾选用户协议'));
  }
  return Promise.resolve();
};
